#pragma once

#include "vgcoreminimal.h"
#include <QObject.h>
/**
 * VGEngine - 游戏引擎功能层接口
 * 定义引擎核心功能的抽象接口，支持不同的引擎实现
 */
class VGEngine : public QObject
{
    Q_OBJECT

public:
    explicit VGEngine(QObject *parent = nullptr) : QObject(parent) {}
    virtual ~VGEngine() = default;

    // 引擎生命周期
    virtual bool PreInit() = 0;
    virtual bool Init() = 0;
    virtual void Start() = 0;
    virtual void Tick() = 0;
    virtual void PreExit() = 0;

    // 引擎状态查询
    virtual bool IsInitialized() const = 0;

signals:
    // 引擎生命周期信号
    void enginePreInitialized();
    void engineInitialized();
    void engineStarted();
    void enginePreExit();
    void engineExit();
};
